{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-02-12T22:17:19.603440Z",
     "start_time": "2019-02-12T22:17:19.523397Z"
    }
   },
   "source": [
    "<h1><center> Facial Emotion Recognition - Simple Architecture </center></h1>\n",
    "<center> A project for the French Employment Agency </center>\n",
    "<center> Telecom ParisTech 2018-2019 </center>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# I. Context"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The aim of this notebook is to explore facial emotion recognition techniques from a live webcam video stream. \n",
    "\n",
    "The data set used for training is the Kaggle FER2013 emotion recognition data set : https://www.kaggle.com/c/challenges-in-representation-learning-facial-expression-recognition-challenge/data\n",
    "\n",
    "The models explored include :\n",
    "- Manual filters \n",
    "- Deep Learning Architectures\n",
    "- DenseNet Inspired Architectures\n",
    "\n",
    "This model will be combined with voice emotion recongition as well as psychological traits extracted from text inputs, and should provide a benchmark and a deep analysis of both verbal and non-verbal insights for candidates seeking for a job and their performance during an interview."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# II. General imports"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Versions used :"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "Python : 3.6.5\n",
    "Tensorflow : 1.10.1\n",
    "Keras : 2.2.2\n",
    "Numpy : 1.15.4\n",
    "OpenCV : 4.0.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-03-06T08:07:47.839370Z",
     "start_time": "2019-03-06T08:07:47.767168Z"
    }
   },
   "outputs": [],
   "source": [
    "### General imports ###\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from time import time\n",
    "from time import sleep\n",
    "import re\n",
    "import os\n",
    "import argparse\n",
    "from collections import OrderedDict\n",
    "import matplotlib.animation as animation\n",
    "\n",
    "### Image processing ###\n",
    "from scipy.ndimage import zoom\n",
    "from scipy.spatial import distance\n",
    "import imutils\n",
    "from scipy import ndimage\n",
    "import cv2\n",
    "import dlib\n",
    "from __future__ import division\n",
    "from imutils import face_utils\n",
    "\n",
    "### CNN models ###\n",
    "import keras\n",
    "from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img\n",
    "from keras.callbacks import TensorBoard\n",
    "from keras.models import Sequential\n",
    "from keras.layers.core import Dense, Dropout, Activation, Flatten\n",
    "from keras.layers.convolutional import Conv2D, MaxPooling2D, SeparableConv2D\n",
    "from keras.utils import np_utils\n",
    "from keras.regularizers import l2#, activity_l2\n",
    "from keras.optimizers import SGD, RMSprop\n",
    "from keras.utils import to_categorical\n",
    "from keras.layers.normalization import BatchNormalization\n",
    "from keras import models\n",
    "from keras.utils.vis_utils import plot_model\n",
    "from keras.layers import Input, GlobalAveragePooling2D\n",
    "from keras.models import Model\n",
    "from tensorflow.keras import layers\n",
    "\n",
    "### Build SVM models ###\n",
    "from sklearn.preprocessing import OneHotEncoder\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn import svm\n",
    "\n",
    "### Same trained models ###\n",
    "import h5py\n",
    "from keras.models import model_from_json\n",
    "import pickle"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# III. Import datas"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-03-06T08:07:48.521087Z",
     "start_time": "2019-03-06T08:07:48.517303Z"
    }
   },
   "outputs": [],
   "source": [
    "path = '/Users/maelfabien/filrouge_pole_emploi/Video/'\n",
    "local_path = '/Users/maelfabien/Desktop/LocalDB/Videos/'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-03-06T08:07:49.198550Z",
     "start_time": "2019-03-06T08:07:48.778299Z"
    }
   },
   "outputs": [],
   "source": [
    "X_train = np.load(local_path + \"X_train.npy\")\n",
    "X_test = np.load(local_path + \"X_test.npy\")\n",
    "y_train = np.load(local_path + \"y_train.npy\")\n",
    "y_test = np.load(local_path + \"y_test.npy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-03-06T08:07:49.302371Z",
     "start_time": "2019-03-06T08:07:49.277008Z"
    }
   },
   "outputs": [],
   "source": [
    "shape_x = 48\n",
    "shape_y = 48\n",
    "nRows,nCols,nDims = X_train.shape[1:]\n",
    "input_shape = (nRows, nCols, nDims)\n",
    "classes = np.unique(y_train)\n",
    "nClasses = len(classes)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# IV. Build the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-03-06T08:10:59.688604Z",
     "start_time": "2019-03-06T08:10:59.631086Z"
    }
   },
   "outputs": [],
   "source": [
    "def createModel():\n",
    "    model = Sequential()\n",
    "\n",
    "    model.add(Conv2D(64, (3, 3), padding='same', input_shape=(48,48,1)))\n",
    "    model.add(BatchNormalization())\n",
    "    model.add(Activation('relu'))\n",
    "    model.add(MaxPooling2D(pool_size=(2, 2), strides=None, padding='same'))\n",
    "    model.add(Dropout(0.25))\n",
    "\n",
    "    model.add(Conv2D(128, (3, 3), padding='same'))\n",
    "    model.add(BatchNormalization())\n",
    "    model.add(Activation('relu'))\n",
    "    model.add(MaxPooling2D(pool_size=(2, 2), strides=None, padding='same'))\n",
    "    model.add(Dropout(0.25))\n",
    "\n",
    "    model.add(Conv2D(256, (3, 3), padding='same'))\n",
    "    model.add(BatchNormalization())\n",
    "    model.add(Activation('relu'))\n",
    "    model.add(MaxPooling2D(pool_size=(2, 2), strides=None, padding='same'))\n",
    "    model.add(Dropout(0.25))\n",
    "\n",
    "    model.add(Conv2D(512, (3, 3), padding='same'))\n",
    "    model.add(BatchNormalization())\n",
    "    model.add(Activation('relu'))\n",
    "    model.add(MaxPooling2D(pool_size=(2, 2), strides=None, padding='same'))\n",
    "    model.add(Dropout(0.25))\n",
    "\n",
    "    model.add(Flatten())\n",
    "\n",
    "    model.add(Dense(512))\n",
    "    model.add(BatchNormalization())\n",
    "    model.add(Activation('relu'))\n",
    "    model.add(Dropout(0.25))\n",
    "\n",
    "    model.add(Dense(256))\n",
    "    model.add(BatchNormalization())\n",
    "    model.add(Activation('relu'))\n",
    "    model.add(Dropout(0.25))\n",
    "\n",
    "    model.add(Dense(7))\n",
    "    model.add(Activation('softmax'))\n",
    "\n",
    "    return model"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-03-05T20:05:06.368644Z",
     "start_time": "2019-03-05T20:05:06.321720Z"
    }
   },
   "source": [
    "def createModel():\n",
    "    \n",
    "    #Model Initialization\n",
    "    model = Sequential() \n",
    "    \n",
    "    model.add(Conv2D(20, (3, 3), padding='same', activation='relu', input_shape=input_shape))\n",
    "    model.add(Conv2D(30, (3, 3), padding='same', activation='relu'))\n",
    "    model.add(MaxPooling2D(pool_size=(2, 2)))\n",
    "    model.add(BatchNormalization())\n",
    "    model.add(Dropout(0.2))\n",
    "    \n",
    "    model.add(Conv2D(40, (3, 3), padding='same', activation='relu'))\n",
    "    model.add(Conv2D(50, (3, 3), padding='same', activation='relu'))\n",
    "    model.add(MaxPooling2D(pool_size=(2, 2)))\n",
    "    model.add(BatchNormalization())\n",
    "    model.add(Dropout(0.2))\n",
    "    \n",
    "    model.add(Conv2D(60, (3, 3), padding='same', activation='relu'))\n",
    "    model.add(Conv2D(70, (3, 3), padding='same', activation='relu'))\n",
    "    model.add(MaxPooling2D(pool_size=(2, 2)))\n",
    "    model.add(Dropout(0.2))\n",
    "    \n",
    "    model.add(Conv2D(80, (3, 3), padding='same', activation='relu'))\n",
    "    model.add(Conv2D(90, (3, 3), padding='same', activation='relu'))\n",
    "    \n",
    "    #Flattening\n",
    "    model.add(Flatten())\n",
    "    \n",
    "    #Adding fully connected layer\n",
    "    model.add(Dense(1000, activation='relu'))\n",
    "    model.add(Dense(512, activation='relu'))\n",
    "    \n",
    "    #Adding Output Layer\n",
    "    model.add(Dense(nClasses, activation='softmax'))\n",
    "     \n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-03-06T08:11:03.059836Z",
     "start_time": "2019-03-06T08:11:00.836825Z"
    }
   },
   "outputs": [],
   "source": [
    "model = createModel()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-03-06T08:11:04.307128Z",
     "start_time": "2019-03-06T08:11:04.295413Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "conv2d_25 (Conv2D)           (None, 48, 48, 64)        640       \n",
      "_________________________________________________________________\n",
      "batch_normalization_7 (Batch (None, 48, 48, 64)        256       \n",
      "_________________________________________________________________\n",
      "activation_1 (Activation)    (None, 48, 48, 64)        0         \n",
      "_________________________________________________________________\n",
      "max_pooling2d_10 (MaxPooling (None, 24, 24, 64)        0         \n",
      "_________________________________________________________________\n",
      "dropout_10 (Dropout)         (None, 24, 24, 64)        0         \n",
      "_________________________________________________________________\n",
      "conv2d_26 (Conv2D)           (None, 24, 24, 128)       73856     \n",
      "_________________________________________________________________\n",
      "batch_normalization_8 (Batch (None, 24, 24, 128)       512       \n",
      "_________________________________________________________________\n",
      "activation_2 (Activation)    (None, 24, 24, 128)       0         \n",
      "_________________________________________________________________\n",
      "max_pooling2d_11 (MaxPooling (None, 12, 12, 128)       0         \n",
      "_________________________________________________________________\n",
      "dropout_11 (Dropout)         (None, 12, 12, 128)       0         \n",
      "_________________________________________________________________\n",
      "conv2d_27 (Conv2D)           (None, 12, 12, 256)       295168    \n",
      "_________________________________________________________________\n",
      "batch_normalization_9 (Batch (None, 12, 12, 256)       1024      \n",
      "_________________________________________________________________\n",
      "activation_3 (Activation)    (None, 12, 12, 256)       0         \n",
      "_________________________________________________________________\n",
      "max_pooling2d_12 (MaxPooling (None, 6, 6, 256)         0         \n",
      "_________________________________________________________________\n",
      "dropout_12 (Dropout)         (None, 6, 6, 256)         0         \n",
      "_________________________________________________________________\n",
      "conv2d_28 (Conv2D)           (None, 6, 6, 512)         1180160   \n",
      "_________________________________________________________________\n",
      "batch_normalization_10 (Batc (None, 6, 6, 512)         2048      \n",
      "_________________________________________________________________\n",
      "activation_4 (Activation)    (None, 6, 6, 512)         0         \n",
      "_________________________________________________________________\n",
      "max_pooling2d_13 (MaxPooling (None, 3, 3, 512)         0         \n",
      "_________________________________________________________________\n",
      "dropout_13 (Dropout)         (None, 3, 3, 512)         0         \n",
      "_________________________________________________________________\n",
      "flatten_4 (Flatten)          (None, 4608)              0         \n",
      "_________________________________________________________________\n",
      "dense_9 (Dense)              (None, 512)               2359808   \n",
      "_________________________________________________________________\n",
      "batch_normalization_11 (Batc (None, 512)               2048      \n",
      "_________________________________________________________________\n",
      "activation_5 (Activation)    (None, 512)               0         \n",
      "_________________________________________________________________\n",
      "dropout_14 (Dropout)         (None, 512)               0         \n",
      "_________________________________________________________________\n",
      "dense_10 (Dense)             (None, 256)               131328    \n",
      "_________________________________________________________________\n",
      "batch_normalization_12 (Batc (None, 256)               1024      \n",
      "_________________________________________________________________\n",
      "activation_6 (Activation)    (None, 256)               0         \n",
      "_________________________________________________________________\n",
      "dropout_15 (Dropout)         (None, 256)               0         \n",
      "_________________________________________________________________\n",
      "dense_11 (Dense)             (None, 7)                 1799      \n",
      "_________________________________________________________________\n",
      "activation_7 (Activation)    (None, 7)                 0         \n",
      "=================================================================\n",
      "Total params: 4,049,671\n",
      "Trainable params: 4,046,215\n",
      "Non-trainable params: 3,456\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And visualize the model architecture :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-03-06T08:11:08.501910Z",
     "start_time": "2019-03-06T08:11:08.207977Z"
    }
   },
   "outputs": [],
   "source": [
    "plot_model(model, to_file='model_images/model_plot.png', show_shapes=True, show_layer_names=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src='model_images/model_plot.png'>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To prevent overfitting, we can do data augmentation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-02-19T13:53:44.798652Z",
     "start_time": "2019-02-19T13:53:44.793239Z"
    }
   },
   "outputs": [],
   "source": [
    "datagen = ImageDataGenerator(\n",
    "        zoom_range=0.2,          # randomly zoom into images\n",
    "        rotation_range=10,       # randomly rotate images in the range (degrees, 0 to 180)\n",
    "        width_shift_range=0.1,   # randomly shift images horizontally (fraction of total width)\n",
    "        height_shift_range=0.1,  # randomly shift images vertically (fraction of total height)\n",
    "        horizontal_flip=True,    # randomly flip images\n",
    "        vertical_flip=False)     # randomly flip images"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-03-06T08:11:17.011434Z",
     "start_time": "2019-03-06T08:11:16.655357Z"
    }
   },
   "outputs": [],
   "source": [
    "# augment and fit data\n",
    "datagen = ImageDataGenerator(\n",
    "    featurewise_center=False,\n",
    "    samplewise_center=False,\n",
    "    featurewise_std_normalization=False,\n",
    "    samplewise_std_normalization=False,\n",
    "    zca_whitening=False,\n",
    "    rotation_range=0,\n",
    "    width_shift_range=0.0,\n",
    "    height_shift_range=0.0,\n",
    "    shear_range=0,\n",
    "    zoom_range=0.0,\n",
    "    horizontal_flip=True,\n",
    "    vertical_flip=False)\n",
    "datagen.fit(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-03-07T00:44:38.535529Z",
     "start_time": "2019-03-06T08:12:10.342484Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/50\n",
      "225/225 [==============================] - 1756s 8s/step - loss: 1.7391 - acc: 0.3296 - val_loss: 1.6223 - val_acc: 0.3792\n",
      "Epoch 2/50\n",
      "225/225 [==============================] - 3350s 15s/step - loss: 1.4218 - acc: 0.4550 - val_loss: 1.7086 - val_acc: 0.3920\n",
      "Epoch 3/50\n",
      "225/225 [==============================] - 1520s 7s/step - loss: 1.2848 - acc: 0.5100 - val_loss: 1.3159 - val_acc: 0.4946\n",
      "Epoch 4/50\n",
      "225/225 [==============================] - 1102s 5s/step - loss: 1.2153 - acc: 0.5342 - val_loss: 1.2285 - val_acc: 0.5261\n",
      "Epoch 5/50\n",
      "225/225 [==============================] - 1045s 5s/step - loss: 1.1579 - acc: 0.5605 - val_loss: 1.2484 - val_acc: 0.5233\n",
      "Epoch 6/50\n",
      "225/225 [==============================] - 1012s 4s/step - loss: 1.1256 - acc: 0.5688 - val_loss: 1.1321 - val_acc: 0.5642\n",
      "Epoch 7/50\n",
      "225/225 [==============================] - 945s 4s/step - loss: 1.0959 - acc: 0.5833 - val_loss: 1.1788 - val_acc: 0.5564\n",
      "Epoch 8/50\n",
      "225/225 [==============================] - 1053s 5s/step - loss: 1.0664 - acc: 0.5949 - val_loss: 1.2706 - val_acc: 0.5194\n",
      "Epoch 9/50\n",
      "225/225 [==============================] - 3562s 16s/step - loss: 1.0483 - acc: 0.6011 - val_loss: 1.1693 - val_acc: 0.5581\n",
      "Epoch 10/50\n",
      "225/225 [==============================] - 982s 4s/step - loss: 1.0164 - acc: 0.6143 - val_loss: 1.1791 - val_acc: 0.5553\n",
      "Epoch 11/50\n",
      "225/225 [==============================] - 958s 4s/step - loss: 0.9992 - acc: 0.6203 - val_loss: 1.1542 - val_acc: 0.5623\n",
      "Epoch 12/50\n",
      "225/225 [==============================] - 956s 4s/step - loss: 0.9797 - acc: 0.6293 - val_loss: 1.1319 - val_acc: 0.5712\n",
      "Epoch 13/50\n",
      "225/225 [==============================] - 985s 4s/step - loss: 0.9603 - acc: 0.6358 - val_loss: 1.2249 - val_acc: 0.5453\n",
      "Epoch 14/50\n",
      "225/225 [==============================] - 975s 4s/step - loss: 0.9387 - acc: 0.6452 - val_loss: 1.1625 - val_acc: 0.5609\n",
      "Epoch 15/50\n",
      "225/225 [==============================] - 1003s 4s/step - loss: 0.9231 - acc: 0.6505 - val_loss: 1.0573 - val_acc: 0.6046\n",
      "Epoch 16/50\n",
      "225/225 [==============================] - 989s 4s/step - loss: 0.9050 - acc: 0.6605 - val_loss: 1.2213 - val_acc: 0.5598\n",
      "Epoch 17/50\n",
      "225/225 [==============================] - 1044s 5s/step - loss: 0.8781 - acc: 0.6669 - val_loss: 1.3825 - val_acc: 0.4982\n",
      "Epoch 18/50\n",
      "225/225 [==============================] - 940s 4s/step - loss: 0.8646 - acc: 0.6738 - val_loss: 1.1437 - val_acc: 0.5717\n",
      "Epoch 19/50\n",
      "225/225 [==============================] - 2787s 12s/step - loss: 0.8419 - acc: 0.6810 - val_loss: 1.1074 - val_acc: 0.5977\n",
      "Epoch 20/50\n",
      "225/225 [==============================] - 916s 4s/step - loss: 0.8263 - acc: 0.6891 - val_loss: 1.1074 - val_acc: 0.5977\n",
      "Epoch 21/50\n",
      "225/225 [==============================] - 978s 4s/step - loss: 0.8067 - acc: 0.6916 - val_loss: 1.1059 - val_acc: 0.5949\n",
      "Epoch 22/50\n",
      "225/225 [==============================] - 962s 4s/step - loss: 0.7916 - acc: 0.7000 - val_loss: 1.0476 - val_acc: 0.6166\n",
      "Epoch 23/50\n",
      "225/225 [==============================] - 985s 4s/step - loss: 0.7692 - acc: 0.7123 - val_loss: 1.3791 - val_acc: 0.5453\n",
      "Epoch 24/50\n",
      "225/225 [==============================] - 1000s 4s/step - loss: 0.7507 - acc: 0.7190 - val_loss: 1.1006 - val_acc: 0.5968\n",
      "Epoch 25/50\n",
      "225/225 [==============================] - 919s 4s/step - loss: 0.7387 - acc: 0.7225 - val_loss: 1.0870 - val_acc: 0.6082\n",
      "Epoch 26/50\n",
      "225/225 [==============================] - 922s 4s/step - loss: 0.7180 - acc: 0.7301 - val_loss: 1.2640 - val_acc: 0.5645\n",
      "Epoch 27/50\n",
      "225/225 [==============================] - 1089s 5s/step - loss: 0.6980 - acc: 0.7404 - val_loss: 1.1608 - val_acc: 0.5896\n",
      "Epoch 28/50\n",
      "225/225 [==============================] - 1156s 5s/step - loss: 0.6896 - acc: 0.7435 - val_loss: 1.1205 - val_acc: 0.6074\n",
      "Epoch 29/50\n",
      "225/225 [==============================] - 1070s 5s/step - loss: 0.6668 - acc: 0.7506 - val_loss: 1.1391 - val_acc: 0.6147\n",
      "Epoch 30/50\n",
      "225/225 [==============================] - 1073s 5s/step - loss: 0.6497 - acc: 0.7609 - val_loss: 1.1766 - val_acc: 0.5954\n",
      "Epoch 31/50\n",
      "225/225 [==============================] - 1070s 5s/step - loss: 0.6371 - acc: 0.7580 - val_loss: 1.2106 - val_acc: 0.6085\n",
      "Epoch 32/50\n",
      "225/225 [==============================] - 1042s 5s/step - loss: 0.6146 - acc: 0.7694 - val_loss: 1.4504 - val_acc: 0.5300\n",
      "Epoch 33/50\n",
      "225/225 [==============================] - 1052s 5s/step - loss: 0.6001 - acc: 0.7744 - val_loss: 1.2629 - val_acc: 0.5784\n",
      "Epoch 34/50\n",
      "225/225 [==============================] - 1109s 5s/step - loss: 0.5932 - acc: 0.7779 - val_loss: 1.1113 - val_acc: 0.6222\n",
      "Epoch 35/50\n",
      "225/225 [==============================] - 1079s 5s/step - loss: 0.5696 - acc: 0.7889 - val_loss: 1.3090 - val_acc: 0.5865\n",
      "Epoch 36/50\n",
      "225/225 [==============================] - 1072s 5s/step - loss: 0.5585 - acc: 0.7927 - val_loss: 1.2919 - val_acc: 0.5949\n",
      "Epoch 37/50\n",
      "225/225 [==============================] - 1029s 5s/step - loss: 0.5449 - acc: 0.7958 - val_loss: 1.1614 - val_acc: 0.6169\n",
      "Epoch 38/50\n",
      "225/225 [==============================] - 1031s 5s/step - loss: 0.5340 - acc: 0.8039 - val_loss: 1.2192 - val_acc: 0.6177\n",
      "Epoch 39/50\n",
      "225/225 [==============================] - 962s 4s/step - loss: 0.5111 - acc: 0.8118 - val_loss: 1.3252 - val_acc: 0.6055\n",
      "Epoch 40/50\n",
      "225/225 [==============================] - 992s 4s/step - loss: 0.5084 - acc: 0.8101 - val_loss: 1.1930 - val_acc: 0.6347\n",
      "Epoch 41/50\n",
      "225/225 [==============================] - 1036s 5s/step - loss: 0.4891 - acc: 0.8175 - val_loss: 1.2282 - val_acc: 0.6239\n",
      "Epoch 42/50\n",
      "225/225 [==============================] - 1070s 5s/step - loss: 0.4789 - acc: 0.8222 - val_loss: 1.2741 - val_acc: 0.6030\n",
      "Epoch 43/50\n",
      "225/225 [==============================] - 973s 4s/step - loss: 0.4725 - acc: 0.8236 - val_loss: 1.5224 - val_acc: 0.5595\n",
      "Epoch 44/50\n",
      "225/225 [==============================] - 949s 4s/step - loss: 0.4535 - acc: 0.8318 - val_loss: 1.4788 - val_acc: 0.5748\n",
      "Epoch 45/50\n",
      "225/225 [==============================] - 1008s 4s/step - loss: 0.4470 - acc: 0.8325 - val_loss: 1.1813 - val_acc: 0.6411\n",
      "Epoch 46/50\n",
      "225/225 [==============================] - 963s 4s/step - loss: 0.4348 - acc: 0.8400 - val_loss: 1.3852 - val_acc: 0.5991\n",
      "Epoch 47/50\n",
      "225/225 [==============================] - 1193s 5s/step - loss: 0.4301 - acc: 0.8384 - val_loss: 1.2582 - val_acc: 0.6291\n",
      "Epoch 48/50\n",
      "225/225 [==============================] - 1412s 6s/step - loss: 0.4081 - acc: 0.8484 - val_loss: 1.3851 - val_acc: 0.6147\n",
      "Epoch 49/50\n",
      "225/225 [==============================] - 1237s 5s/step - loss: 0.4177 - acc: 0.8444 - val_loss: 1.3482 - val_acc: 0.6272\n",
      "Epoch 50/50\n",
      "225/225 [==============================] - 1232s 5s/step - loss: 0.3999 - acc: 0.8513 - val_loss: 1.4511 - val_acc: 0.6116\n"
     ]
    }
   ],
   "source": [
    "#Creating 2nd model and training(fitting)\n",
    "\n",
    "model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n",
    " \n",
    "batch_size = 128\n",
    "epochs = 50\n",
    "\n",
    "# Fit the model on the batches generated by datagen.flow().\n",
    "history = model.fit_generator(\n",
    "    datagen.flow(X_train, y_train, batch_size=batch_size),\n",
    "    steps_per_epoch=int(np.ceil(X_train.shape[0] / float(batch_size))),\n",
    "    epochs = epochs, \n",
    "    validation_data=(X_test, y_test))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# V. Evaluate the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-03-07T07:36:05.823493Z",
     "start_time": "2019-03-07T07:36:04.713869Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Accuracy Curves')"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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CQmhSJEiAEyZMkUTvVI5WWQkvPGG7aIXsQl71iyoVMnu79LFlu/d60r6a9fC9u12f5s2ttXfpIk9Acgiss5/VJUuHn300XiPo6Ki+OKLL7j77rsT7UuKiHDlyhXy58+fqtfOmzfvdSfprLTiWXh4OLNmzeKRRx5BRJg9ezZjxozJFtM0//vvP4KCgrwdhlLZx8GD8MgjsGWLbYW//rrdEv5PMwaqV7fbCy/YVvyGDVCypC3Lgrzfp6C8atmyZRhjmDNnDp988glVq1bF39+fzz77DID169fz2GOPUblyZfLly0fBggVp0qQJS9yMHnV3jd5ZdvToUYYOHUrp0qUJCAigVq1arFixIt7z3V2jj1u2du1aGjVqRL58+QgODuaJJ57gypUrieJYuXIld911FwEBAdx4440MGTKE7du3Y4xh9OjRHn82ixYt4vz58/Ts2ZNevXpx4cIFFi5cmGT9uXPn0qRJEwoVKkS+fPmoWrUqgwcPJjo6OrZOTEwM48ePp27duhQoUICgoCDuuOMORo4cmezn6FSyZEnatGnj9vNZtmwZDRo0IH/+/HTp0gWAkydP8txzz3HHHXdQuHBhAgMDqV69OmPGjCHGzVSf8PBw3nnnHWrUqEFgYCCFCxemXr16TJw4EYB3330XYwy//PJLoudevnyZggULct9993nw6SqVCQ4ehCefhJYt7fS2556D0aPtaPilS21SP3nSDrirWdM+LlcO1qyx19s9abjkz28H2WXRJA/aolcO7733HhcuXKB3794UL16cSo6uqvnz53PkyBEefvhhypUrx+nTp5k2bRr3338/CxcupGPHjh4dv1u3bgQGBvLiiy9y9epVxo4dywMPPMChQ4coXbp0is/ftGkT8+fPp2/fvjz66KP89NNPTJw4ET8/Pz799NPYej/99BNt27alePHivPLKKwQFBTF37lzWrFmT6s8kJCSEqlWrUq9ePQBuvfVWpkyZ4rZnZMiQIYwZM4bbb7+dIUOGUKJECQ4dOsSCBQsYPXo0Pj4+iAgPPfQQCxYsoGHDhrz22msUKlSIffv2sWDBAl577bVUx+j066+/Mnv2bPr378/jjz+Oj48PAFu3buW7776jffv23HTTTURERLB06VKGDBnC8ePH+eSTT2KPER4eTosWLVi/fj1t27alV69e+Pr6smvXLr7++msGDBjA448/zhtvvMGUKVMSXQqaP38+//33H3379k3z+1AqXezZA++8A199lbq56926wfjxULhwxsXmDSKS7bfatWtLSvbt25dinZxo6tSpAsjUqVPd7v/hhx8EkODgYAkLC0u0/9KlS4nK/vvvP6lYsaLUrFkzXvlLL70kgJw6dSpRWceOHSUmJia2fO3atQLI8OHDY8uuXr0qgAwYMCBRmY+Pj2zbti3e6zVv3lz8/f0lPDw8tqxGjRqSL18+OXHiRGxZRESE1K5dWwB599133X4OCR05ckSMMfHqjx49Wowxcvjw4Xh116xZI4C0bt1aIiIi4u2L+56nT58ugPTp0ydeuYhIdHR07PfuPkenEiVKSOvWrWMfOz8fQNauXZuo/uXLlxO9lohI586dxdfXV86cORNbNmLECAFkxIgRierHje/BBx+U/Pnzy8WLF+PVadSokRQvXlyuXbuW6PnpLbf+PasUbN4s0qGDiL2SLpI3r0ifPiJLlojMmCHywQciQ4eKPPaYSOvWIjVripQqJVK2rN3v5m8lqwK2iIc5UrvujcmaWybr3bs3N9xwQ6LyuNfpr1y5QlhYGOHh4TRt2pQdO3Z4vBTp4MGD480IaNSoEX5+fhw8eNCj5zdt2pSaNWvGK2vevDkRERGcPHkSgOPHj7Nr1y46d+5M2bJlY+v5+fnxzDPPePQ6TlOnTsUYQ48ePWLLevToQZ48eZg6dWq8urNmzQJsr4ifn1+8fXHf86xZs/Dx8eH9999PNDsiz3WOzL3rrrsStbAB8uXLF/taERERnD17ljNnztC6dWsiIyPZtm1bvPiKFy/Oyy+/nOg4cePr378/ly9fZu7cubFlBw4cYN26dTz22GP4+vpe13tRKtXWrYO2baFuXfj6a/D3t9PZDh+GyZOhXTs7iv6FF+D992H6dDuYbts2O4L+xAm7PwsNoEtP2nWvAKhSpYrb8lOnTvHqq6/y3XffccY5XzSOCxcuULx48RSP77wU4GSMoUiRIoSFhXkUX8LnAxQtWhSAsLAwbr75Zo4ePQrALbfckqiuu7KkxMTEMG3aNOrUqcPVq1c5dOhQ7L569eoxbdo0RowYEZv8Dh48iK+vL9VTuEZ38OBBypUr5/aE6nol9fO7du0a77zzDl9++SVHjhxBEiz0ce7cOcD27B0+fJgmTZqkmKhbtWpFhQoVCAkJoV+/foCdkQBot71KXydO2BXlzp+H8HC4ejXx19OnYedOWz9/fntN/vnn4cYbvRt7FqKJPrkVjnIRd3f1i46OpkWLFhw9epRnn32W2rVrU6hQIfLkycPEiRNZsGCB2wFd7jivGSeUMPGk9vmpOYanfvzxR06ePMnJkyepXLlyknXiDopLT8mthRAVFeW2PKm7Mg4aNIhJkybRvXt33njjDYKDg/H19WXjxo28/vrrHv/84sqTJw99+vTh9ddfZ+/evdxyyy3MmDGDRo0apeqESqkkXbpkp7h9+KFN6CkpVAieeQaefRYcDQDlooleJWnLli3s37+fd955J1F37rhx47wUVdKci/8cOHAg0T53ZUmZMmUK+fPnZ9q0aW739+7dm5CQkNhEX6VKFVatWsXevXupUaNGksetUqUKK1eu5OzZs8m26p37zp49S8mSJWPLL1686HEPiNOXX35Jq1at+PLLL+OV79mzJ95jYww333wze/fuJTIyMsVWfe/evRk+fDghISE0bdqU0NBQ3n333VTFplQiMTF2EZpXXoFTp2xZp05QqxYEBtotICD+18BAu2CNTidNkiZ6lSRnKzphi3nbtm0sXbrUGyElq0KFClSvXp0FCxYwcuTI2Ov0165dizcyPzlhYWF88803tG/fns6dO7uts3DhQhYtWkRYWBhFixblkUceYeLEiQwbNoxvvvkmXpIUkdgWevfu3Vm+fDnDhg1j4sSJ8Vruces5u+FXrlxJtWrVYut89NFHqfg07DHz5s2b6Od38eLFeKPtnZyt/vfff59XX3010bHixluqVCnatWvHzJkz2bdvHwULFqRr166pik+peH75xU5/27rVPq5XD8aOhQYNvBtXDqCJXiWpRo0aVKlShZEjR3L+/HkqV67M/v37mTRpEjVq1Ig3kCurGDNmDG3btqV+/fo88cQTBAUFMWfOnNgkldISwTNnzuTatWt06tQpyTqdOnVi7ty5zJw5k8GDB9OkSROeffZZPvnkE+rUqUOXLl0oUaIER44cYd68eezdu5eAgAAeffRRFi1axKRJk9i/fz/3338/BQsW5MCBA6xZsyb287zvvvuoWLEiL730EqGhoZQtW5Y1a9awY8cOChUq5PFnYYyhY8eOTJ8+ne7du9OsWTNCQ0OZPHkyxYsX59ixY/HqDx06lKVLl/Laa6+xYcMGWrRogZ+fH7t37+bEiRN8//338er379+fb7/9luXLlzNgwIAkLx8olayjR+HFF2HBAvu4dGk71/2RR7LE8rE5gSZ6lSQ/Pz++//57hg4dypQpU7h69Sq33347c+bMYd26dVky0bds2ZLvv/+eV199lVGjRlGkSBEeeeQROnToQJMmTVJc1W7KlCn4+/vTrl27JOu0bduWwMBApkyZwuDBgwH4+OOPqV27NuPHj2f06NGICOXKlaNDhw6xLXxjDAsWLGDcuHFMnTqVN998E19fXypVqhSvNezr68uSJUt49tln+fjjj/H39+e+++5j9erV3Hnnnan6PMaNG0fhwoVZtGgRCxcupHz58jz99NNUq1Yt0XsMCAhg1apVvP/++8ydO5cVK1aQL18+qlSp4naQXdu2bSlbtiwnT56kT58+qYpL5RJRURAaCv/+C//8k/jrP//YxWmuXbM3fHnxRTsyPpWrcqrkmfQeyOQNderUkS1btiRbZ//+/dx6662ZFJHKambNmsWjjz7K4sWL6dChg7fDyRFEhMqVK5M/f352Okc9ZxL9e87CoqPt+u+zZtlW+oULKT+nRw+7wE2ZMhkfXw5hjNkqInU8qastepWjxMTEEBUVFW8+e0RERGzLuEmTJl6MLmf54YcfOHz4cJYcmKkymYi9scvs2TB3rp2b7lSihF0Hvnhx+32JEq7vixeHKlXsvdtVhtFEr3KUixcvcuutt9K9e3eqVKnC6dOnmTNnDnv37uXNN9/MkDnsuc3KlSs5fPgwo0aNolSpUjz++OPeDkl5y5EjNrnPmgW//+4qr1TJXmN/5BHQnhev00SvcpTAwEBatWrFokWLYm8KU7VqVb744ovYxV3U9XnttdfYunUr1atXZ/z48ToILzfas8fe9MU5gA4gOBgeesjePOauu3LsKnPZkSZ6laP4+/szffp0b4eRo23cuNHbIShv2bvXJvj58+1jf397j/bu3aFFC9Dlj7MkTfRKKaWSt3cvvPWWTfAiNsH37w8vvWSnw6ksTRO9UkrlNr//DiNH2q+lStlk7W77+2+b4OfNswnez88m+GHDNMFnI5rolVIqtzhyxCbumTNd92l3rkSXHD8/6NfPJnidApftaKJXSqmc7q+/bAt+8mS7iE3evDZxd+9u7/7211/ut+ho6N3bJvg4t35W2YsmeqWUyqn+/dcuJzt+PERE2CVlH3sM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F/Pjjz+yYsUKqlatSozzdpYZaN68eXTr1o28efPy6aef8t1337FixQqWLl0KkCkxxOXj45PkPvHgB+RM5K+++iqVK1eO3Ro1aoSIMHPmTKKiotIt3oRMEt1Cyb1mPjfXfy9evEjjxo358ccfee6551iwYAHLly9nxYoVNG3aNM0/lyZNmlC1atXYz+nHH3/k5MmTOXOhoz//tIl91CjbXTdiBPz4o97PXWWarDEHSWWIPn36MH78eKZOncrZs2cJDQ3l1VdfTdTFu3DhQq5cucKyZcto3LhxbLmIcObMGQoVKpTq13a2iH///fdE+/bt25eobObMmeTLl49Vq1YREBAQW+5u1H9SSSylWPbu3Uv58uXdxuKuBZ9WFy5cYNGiRbRp08ZtN/SOHTsYNWoUS5cupX379pQoUYKCBQsmu8gREDs4LqV6YLvH485WcErYc5GSFStWEBoayowZM+jRo0e8fcOGxb8nlbNHwJP4APr168eQIUPYtm0bISEh5MuXj27duqUqvixv6VLo2RPCwuDGG2H2bNt6VyoT5foWfU5Wq1Yt7rzzTr766is+//xzjDFuu+2drdeELdUJEyZw5syZNL12qVKlqFOnDosXL+bw4cOx5REREXz88cduY8iTJ0+8FqKIuF0mt0CBAgBuE5k7zpH5H3zwQbwW7V9//cX06dOpVKkSNWrU8OyNeWD27NlcvXqVJ598ks6dOyfahg0bRkBAQOylFB8fHx5++GF2797N9OnTEx3P+XMJDg6mVatWLFmyhFWrViVZD2zS3bdvH6dOnYotCw8P93jGgFNSvxs//PADW7dujVdWq1YtqlatyuTJk9m/f3+y8QE89thj+Pv789577/Htt9/SpUsXChYsmOh52VJkpF13/n//s0m+TRvYsUOTvPIKbdHncH369OHpp59m2bJlNGvWzG3LtV27drzyyit0796dp556ikKFCrFu3TqWL19OxYoV0/zaY8aMoUWLFjRo0ICBAwdSqFAhZs+e7bbru3PnznzzzTc0b96cHj16EBERweLFiwkPD09Ut0SJElSoUIFZs2ZRoUIFihcvTlBQEO3atXMbR7Vq1Xj++ecZM2YMTZs2pWvXrly8eJEJEyZw9epVxo8ff90D2eIKCQmhQIECiabsORUoUIDWrVuzdOlSQkNDKVmyJO+88w6rV6/m8ccfZ9myZTRo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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Plotting accuracy and loss curves for 2nd model\n",
    "\n",
    "# Loss Curves\n",
    "plt.figure(figsize=[8,6])\n",
    "plt.plot(history.history['loss'],'r',linewidth=2.0)\n",
    "plt.plot(history.history['val_loss'],'b',linewidth=2.0)\n",
    "plt.legend(['Training loss', 'Validation Loss'],fontsize=18)\n",
    "plt.xlabel('Epochs ',fontsize=16)\n",
    "plt.ylabel('Loss',fontsize=16)\n",
    "plt.title('Loss Curves',fontsize=16)\n",
    " \n",
    "# Accuracy Curves\n",
    "plt.figure(figsize=[8,6])\n",
    "plt.plot(history.history['acc'],'r',linewidth=2.0)\n",
    "plt.plot(history.history['val_acc'],'b',linewidth=2.0)\n",
    "plt.legend(['Training Accuracy', 'Validation Accuracy'],fontsize=18)\n",
    "plt.xlabel('Epochs ',fontsize=16)\n",
    "plt.ylabel('Accuracy',fontsize=16)\n",
    "plt.title('Accuracy Curves',fontsize=16)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# VI. Save the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-03-07T07:36:40.933059Z",
     "start_time": "2019-03-07T07:36:38.628807Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9521"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#save the model weights\n",
    "json_string = model.to_json()\n",
    "model.save_weights(local_path + 'savedmodels/model_simple_2.h5')\n",
    "open(local_path + 'savedmodels/model_simple_2.json', 'w').write(json_string)\n",
    "#model.save_weights(local_path + 'savedmodels/Emotion_Face_Detection_Model.h5')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-03-07T07:36:45.396761Z",
     "start_time": "2019-03-07T07:36:42.688716Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loaded model from disk\n"
     ]
    }
   ],
   "source": [
    "with open(local_path + 'savedmodels/model_simple_2.json','r') as f:\n",
    "    json = f.read()\n",
    "model = model_from_json(json)\n",
    "\n",
    "model.load_weights(local_path + 'savedmodels/model_simple_2.h5')\n",
    "print(\"Loaded model from disk\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# VII. Sources"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- Visualization : https://github.com/JostineHo/mememoji/blob/master/data_visualization.ipynb\n",
    "- State of the art Architecture : https://github.com/amineHorseman/facial-expression-recognition-using-cnn\n",
    "- Eyes Tracking : https://www.pyimagesearch.com/2017/04/24/eye-blink-detection-opencv-python-dlib/\n",
    "- Face Alignment : https://www.pyimagesearch.com/2017/05/22/face-alignment-with-opencv-and-python/\n",
    "- C.Pramerdorfer,  and  M.Kampel.Facial  Expression  Recognition  using  Con-volutional  Neural  Networks:  State  of  the  Art.  Computer  Vision  Lab,  TU  Wien. https://arxiv.org/pdf/1612.02903.pdf\n",
    "- A Brief Review of Facial Emotion Recognition Based\n",
    "on Visual Information : https://www.mdpi.com/1424-8220/18/2/401/pdf\n",
    "- Going deeper in facial expression recognition using deep neural networks : https://ieeexplore.ieee.org/document/7477450"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  },
  "latex_envs": {
   "LaTeX_envs_menu_present": true,
   "autoclose": false,
   "autocomplete": true,
   "bibliofile": "biblio.bib",
   "cite_by": "apalike",
   "current_citInitial": 1,
   "eqLabelWithNumbers": true,
   "eqNumInitial": 1,
   "hotkeys": {
    "equation": "Ctrl-E",
    "itemize": "Ctrl-I"
   },
   "labels_anchors": false,
   "latex_user_defs": false,
   "report_style_numbering": false,
   "user_envs_cfg": false
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
